各位好,今天要延續專案的說明以及補充,以下是預計會說明的主題。
在上一篇我們已經認識了 Struct 今天我們要再來重新認識一下程式碼的引用、輸出到底是怎麼運作的。
之前寫了很多的程式並且可以在不同的檔案呼叫或是使用,首先我們先來看一下有幾種方式可以來管理我們的 module
還記得 Cargo.toml 裡面的 dependencies 嗎?而 packages 就是 cargo 所提供的功能讓我們可以建立、測試、分享 crates。
[dependencies]
rand = "0.3.14"
Modules 的集合就成為了 Crates
可以組織管理 scope 還有 private 的 paths
最小的單位像是 Struct、function、module
Crate 是 binary 或是 library,而一個 package 可以同時有很多的 binary crate 但是最多只能有一個 library crate。
以下是使用 cargo new
的指令所建立出來的架構,
$ cargo new my-project
Created binary (application) `my-project` package
$ ls my-project
Cargo.toml
src
$ ls my-project/src
main.rs
而 main.rs
就是預設的進入點也就是這個 package 的 binary crate 的 root,同樣若是有偵測到 src/lib.rs 則就會是這個 package 的 library crate 的 root。
而若是有多個 binary 檔案我們可以放在 src/bin 裡面也就是之前在寫Diesel 的 tutorial時的做法。
因此一個 package 可以把他裡面所有的 crates 和其他東西都打包起來給別的 package 使用例如我們第一個在 cargo.toml 裡面加的 rand
依賴,
[dependencies]
rand = "0.3.14"
今天先介紹了 packages 和 crates 彼此的關係還有專案的一些基本架構也釐清了,這樣對照之前所做的又更清楚的理解了,那麼我們下一篇 modules 會繼續把這個主題講完。
那就明天見!
ch07-00-managing-growing-projects-with-packages-crates-and-modules